package org.example.projectdemo.repository;

import org.example.projectdemo.model.entity.Schedule;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.time.LocalDate;
import java.util.List;

/**
 * ClassName: Schedule
 * Package: org.example.projectdemo.repository
 * Description:
 *
 * @Author ZY
 * @Create 23:06
 * @Version 1.0
 */
@Repository
public interface ScheduleRepository extends JpaRepository<Schedule,Long> {
    /**
     * 根据课程ID查找该课程的所有排课安排
     *
     * @param courseId 课程ID
     * @return 该课程的排课安排列表
     */
    List<Schedule> findByCourseId(Long courseId);

    /**
     * 根据具体日期查找当天的所有排课
     *
     * @param date 具体日期
     * @return 指定日期的排课列表
     */
    List<Schedule> findByDate(LocalDate date);

    /**
     * 查找指定日期范围内的所有排课
     *
     * @param startDate 开始日期 (包含)
     * @param endDate 结束日期 (包含)
     * @return 日期范围内的排课列表
     */
    List<Schedule> findByDateBetween(LocalDate startDate, LocalDate endDate);
    
    /**
     * 检查指定ID的排课是否存在
     * 
     * @param id 排课ID
     * @return 存在返回true，否则返回false
     */
    boolean existsById(Long id);
    
    /**
     * 根据课程ID删除所有相关的排课记录
     * 
     * @param courseId 课程ID
     */
    void deleteByCourseId(Long courseId);
}